#include <iostream>
#include "Test.h"
using namespace std;

//全局函数的方法
//把成员函数转化为全局函数 多了一个参数
Test TestAdd(Test &t1, Test &t2){
        Test tmp;
        tmp = Test(t1.a+t2.a, t1.b+t2.b);
        return tmp;
}

//把全局函数转化位成员函数,通过this指针隐藏在左操作符数
int main01(int argc, char const *argv[]){
        Test t1(1, 2);
        Test t2(3, 4);

        //全局函数方法
        Test t3;
        t3 = TestAdd(t1, t2);

        //成员函数方法
        Test t4 = t1.TestAdd(t2); //匿名对象直接转t4
        Test t5;
        t5 = t1.TestAdd(t2); //匿名对象 复制给t5 浅拷贝
        
        t4.print();
        t5.print();
        
        return 0;
}

//在类的成员方法返回引用 其实是返回类的本身 *this
int main(int argc, char const *argv[]){
        Test t1(1, 2);
        Test t2(3, 4);

        t1.TestAdd2(t2);
        t1.print();

        return 0;
}
